<?php
class Deficiencia_modelo extends CI_Model {
	
var $nombreDef = '';
var $descripcionDef='';
var $estadoDef='';
var $entidad='';
var $idVisita='';
var $idObra='';
var $defProb='';
var $defCons='';

	

function __construct()
{
parent::__construct();


}

function insertar_deficiencia($idVisit,$idObra){
	
	
	$this->nombreDef = $this->input->post('nombre');
	$this->descripcionDef = $this->input->post('descripcion');
	$this->entidad = $this->input->post('entidad');
	
	if($this->input->post('estadoDef')== "Cerrada"){
	$this->estadoDef="Cerrada";
	}else{
	$this->estadoDef="Abierta";
	}
	$this->idVisita=$idVisit;
	$this->idObra=$idObra;
	$this->defProb=$this->input->post('probabilidad');
	$this->defCons=$this->input->post('consecuencia');

	
	
		
	$this->db->insert('deficiencia',$this);
	
	return $this->db->insert_id(); 
	
		
}

function insertar_historico($idDef,$idVisita){
	
	$this->idVisita=$idVisita;
	$this->idDef=$idVisita;
	
	
	
}



function listado_deficienciasVisita($idObra){
	
	$query = $this->db->query ('SELECT deficiencia.idDeficiencia,nombreDef,estadoDef,tipoProbCon,entidad,fecha,nombreSub,count(idMedida) AS numMed from visita,subcontrata,medidacorrectora RIGHT OUTER JOIN deficiencia ON medidacorrectora.idDeficiencia=deficiencia.idDeficiencia,probcon where probcon.idProb=defProb and probcon.idCon=defCons and idSubcontrata=entidad and deficiencia.idVisita=visita.idVisita and deficiencia.idObra='.$idObra.'
GROUP BY deficiencia.idDeficiencia ORDER BY fecha desc');
	return $query->result(); 
}



function listado_deficienciasVisitaAb($idObra){

	
	$query = $this->db->query ('SELECT deficiencia.idDeficiencia,nombreDef,estadoDef,tipoProbCon,entidad,fecha,nombreSub,count(idMedida) AS numMed from visita,subcontrata,medidacorrectora RIGHT OUTER JOIN deficiencia ON medidacorrectora.idDeficiencia=deficiencia.idDeficiencia,probcon where probcon.idProb=defProb and probcon.idCon=defCons and idSubcontrata=entidad and deficiencia.idVisita=visita.idVisita and deficiencia.idObra='.$idObra.' and estadoDef=\'Abierta\' 
GROUP BY deficiencia.idDeficiencia ORDER BY fecha desc');
	return $query->result(); 
}


function listado_idAbiertas(){
	
		$query = $this->db->query ("select idDeficiencia from deficiencia where estadoDef='abierta'");
		return $query->result();
}


function nombreDeficiencia($idDef){
	
	$query = $this->db->query('SELECT * FROM deficiencia,descripciondef where descripcionDef=idDescripcion and idDeficiencia =  ' .$idDef. '');

	return $query->result();
}

function listado_porVisita($idVisita){
	
	$query=$this->db->where('idVisita', $idVisita);
	$query=$this->db->get('deficiencia');
	return $query->result(); 
	
}


function actualizar_estadoDef($idDef,$idVisita){
	
	$this->load->model('Historico_modelo','','TRUE');
	
	
	
	$resultado=true;

	
	$query = $this->db->query ('SELECT estadoMedida from medidacorrectora where idDeficiencia='.$idDef.'');
	$datos=$query->result(); 
	
	
		$query = $this->db->query ('SELECT estadoDef from deficiencia where idDeficiencia='.$idDef.'');
	$datos2=$query->result(); 
	
	
	foreach($datos as $item){
		
       if($item->estadoMedida == 'No ejecutada'){
       $resultado=false;
       break;
       }
   
	}
	
	foreach($datos2 as $item2){
		
		
	

	if ($resultado==true){
		
		$estadoDef="Cerrada";
		
		
	$data = array('estadoDef' => $estadoDef);
		
		$this->db->where('idDeficiencia', $idDef);
	$this->db->update('deficiencia',$data);
	
	
	if($item2->estadoDef != $estadoDef){
	$this->Historico_modelo->actualizar_historico($idDef,$idVisita);
			
			
		}
	
	
		
	}else{
		
		
			$estadoDef="Abierta";
			
	
			

	$data = array('estadoDef' => $estadoDef);
		
		$this->db->where('idDeficiencia', $idDef);
	$this->db->update('deficiencia',$data);
		
	
	if($item2->estadoDef != $estadoDef){
	$this->Historico_modelo->actualizar_historico($idDef,$idVisita);
			
			
		}
		
	}
	
	
}
	
	
	
}



function def_visita($idVisita){
	$query = $this->db->query ('SELECT * FROM deficiencia,visita,probcon where defProb=idProb and defCons=idCon and deficiencia.idVisita='.$idVisita.' and deficiencia.idVisita=visita.idVisita');
	return $query->result(); 
	
	
}

function listado_defMcParte($idDef){
	
	
	$query = $this->db->query ('SELECT * FROM deficiencia,medidacorrectora,uploads where deficiencia.idDeficiencia='.$idDef.' and medidacorrectora.idDeficiencia=deficiencia.idDeficiencia and uploads.idDef=deficiencia.idDeficiencia');
	return $query->result(); 
}

function listado_defMcParteSin($idDef){
	
	
	$query = $this->db->query ('SELECT * FROM deficiencia,medidacorrectora where deficiencia.idDeficiencia='.$idDef.' and medidacorrectora.idDeficiencia=deficiencia.idDeficiencia');
	return $query->result(); 
}


function listado_uploadsParte($idDef){
	
	$query = $this->db->query('SELECT * FROM uploads where uploads.idDef='.$idDef.'');
	return $query->result();
}

function listado_defAbiertas($idObra){
	$query = $this->db->query('select deficiencia.idDeficiencia,nombreDef,visita.fecha,nombreMed,segundos,fechaPlazo,visita.idVisita,visita.nombreVisita,tipoProbCon from deficiencia,medidacorrectora,visita,probcon where deficiencia.idObra='.$idObra.' and medidacorrectora.idDeficiencia=deficiencia.idDeficiencia and  idProb=defProb and defCons=idCon and deficiencia.idVisita=visita.idVisita and estadoDef=\'Abierta\' group by (deficiencia.idDeficiencia) order by segundos asc ');
	return $query->result();
	
}

function listado_defAb($idVisita){
	
$query = $this->db->query('SELECT deficiencia.idDeficiencia,nombreDef,visita.fecha FROM deficiencia,medidacorrectora,visita where 
medidacorrectora.idDeficiencia=deficiencia.idDeficiencia and deficiencia.idVisita=visita.idVisita and deficiencia.idVisita <> '.$idVisita.' and deficiencia.idObra=1 and estadoDef=\'Abierta\' order by segundos asc ');
	return $query->result();
	
}




function listado_prob(){
	
	$query=$this->db->get('probabilidad');
	return $query->result(); 
}


function listado_cons(){
	
	$query=$this->db->get('consecuencia');
	return $query->result(); 
}

function probDef($idDef){
	
	$query=$this->db->query('SELECT * FROM deficiencia,probabilidad where defProb=idProb and idDeficiencia='.$idDef.'');
	return $query->result(); 
	
	
}

function consDef($idDef){
	
	$query=$this->db->query('SELECT * FROM deficiencia,consecuencia where defCons=idCon and idDeficiencia='.$idDef.'');
	return $query->result(); 
	
	
}

function estimacion($idDef){
	
	
		$query=$this->db->query('SELECT tipoProbCon FROM deficiencia,probcon where idDeficiencia='.$idDef.' and probcon.idProb=defProb and probcon.idCon=defCons');
		return $query->result(); 
}


function listado_estado($estado,$idObra){
	
	
		$query = $this->db->query ('SELECT deficiencia.idDeficiencia,nombreDef,estadoDef,tipoProbCon,entidad,fecha,nombreSub,count(idMedida) AS numMed from visita,subcontrata,medidacorrectora RIGHT OUTER JOIN deficiencia ON medidacorrectora.idDeficiencia=deficiencia.idDeficiencia,probcon where probcon.idProb=defProb and probcon.idCon=defCons and idSubcontrata=entidad and deficiencia.idVisita=visita.idVisita and estadoDef="'.$estado.'" and deficiencia.idObra='.$idObra.'
GROUP BY deficiencia.idDeficiencia ORDER BY fecha desc');
	return $query->result(); 
	
	
	
}


function listado_estimacion($estimacion,$idObra){
	
	
		$query = $this->db->query ('SELECT deficiencia.idDeficiencia,nombreDef,estadoDef,tipoProbCon,entidad,fecha,nombreSub,count(idMedida) AS numMed from visita,subcontrata,medidacorrectora RIGHT OUTER JOIN deficiencia ON medidacorrectora.idDeficiencia=deficiencia.idDeficiencia,probcon where probcon.idProb=defProb and probcon.idCon=defCons and idSubcontrata=entidad and deficiencia.idVisita=visita.idVisita and tipoProbCon="'.$estimacion.'" and deficiencia.idObra='.$idObra.'
GROUP BY deficiencia.idDeficiencia ORDER BY fecha desc');
	return $query->result(); 
	
	
	
}

function listado_ambos($estado,$estimacion,$idObra){
	
	
		$query = $this->db->query ('SELECT deficiencia.idDeficiencia,nombreDef,estadoDef,tipoProbCon,entidad,fecha,nombreSub,count(idMedida) AS numMed from visita,subcontrata,medidacorrectora RIGHT OUTER JOIN deficiencia ON medidacorrectora.idDeficiencia=deficiencia.idDeficiencia,probcon where probcon.idProb=defProb and probcon.idCon=defCons and idSubcontrata=entidad and deficiencia.idVisita=visita.idVisita  and estadoDef="'.$estado.'" and tipoProbCon="'.$estimacion.'" and deficiencia.idObra='.$idObra.'
GROUP BY deficiencia.idDeficiencia ORDER BY fecha desc');
	return $query->result(); 
	
	
	
}



function cont_defVis($idVisita){
	
		$query = $this->db->query ('Select count(distinct idDeficiencia) as contTot from deficiencia where deficiencia.idVisita='.$idVisita.'');
			return $query->result(); 
		
}


function cont_defAbiertas($idVisita){
	
	$estado="Abierta";
	
		$query = $this->db->query ('Select count(distinct idDeficiencia)as contA from deficiencia where estadoDef="'.$estado.'" and deficiencia.idVisita="'.$idVisita.'"');
			return $query->result(); 
		
}

function obtener_historico($idDef){
	
	$query = $this->db->query ('SELECT * FROM historico,visita where idDef='.$idDef.'  and visita.idVisita=historico.idVisita order by estadoDef,nombreVisita asc');
	return $query->result(); 
	
}

function defNuevas($idVisita){
	
	
	
	$query = $this->db->query ('Select deficiencia.idDeficiencia,deficiencia.nombreDef,tipoProbCon,fecha,nombreVisita,idActual from  historicodefmc,deficiencia,probcon where  defProb=idProb and defCons=idCon and historicodefmc.idActual='.$idVisita.' and deficiencia.idDeficiencia=historicodefmc.idDeficiencia  and deficiencia.estadoDef=\'abierta\'');
	return $query->result(); 
	
	
}

function defAtrasadas($idVisita){
	
	$query = $this->db->query ('Select deficiencia.idDeficiencia,deficiencia.nombreDef,tipoProbCon,fecha,nombreVisita,idActual from  historicodefa,deficiencia,probcon where  defProb=idProb and defCons=idCon and historicodefa.idActual='.$idVisita.' and deficiencia.idDeficiencia=historicodefa.idDeficiencia  and deficiencia.estadoDef=\'abierta\'');
	return $query->result(); 
	
	
}

function fotos_def($idDef){
	
	
		$query = $this->db->query ('SELECT * FROM uploads,deficiencia where idDeficiencia=idDef and idDef='.$idDef.'');
		return $query->result(); 
}

function descripciones(){
	
	$query = $this->db->query ('SELECT * FROM descripciondef');
		return $query->result();
	
	
}


}